package com.sodimac.v2s.business
{
 	import com.adobe.cairngorm.business.ServiceLocator;
 	import com.sodimac.util.commons.SOAPHeaderUtil;
 	import com.sodimac.v2s.model.ComprasModelLocator;
 	
 	import flash.xml.XMLDocument;
 	import flash.xml.XMLNode;
 	
 	import mx.collections.ArrayCollection;
 	import mx.formatters.DateFormatter;
 	import mx.rpc.AsyncToken;
 	import mx.rpc.IResponder;
 	import mx.rpc.soap.*;
 	import mx.rpc.xml.SimpleXMLEncoder;	
	
	public class OCWSSDelegate
	{
		
		private var service:WebService;
		private var responder:IResponder;		
		
		public function OCWSSDelegate(responder:IResponder)
		{
			this.service = ServiceLocator.getInstance().getWebService("wsEmitirOC_CO");
			this.responder = responder;
		}

		
		public function EmitirOrdenCompraCO(cabecera: Object, 
										   idPedidoCorp: Number,
										   idProveedor: String,
										   fechaEnvio:Date,
										   fechaEmision:Date,
										   fechaRecepcion:Date,
										   idSucursal:Number,
										   sumaCantidades: Number,
										   arrProductos: ArrayCollection):void
		{
			trace("OCWSSDelegate.EmitirOrdenCompraCO (PedidoCorp="+ idPedidoCorp +")");
			var modelo:ComprasModelLocator = ComprasModelLocator.getInstance();
			
			var solicitarOrdenesDeCompraRequest:Object = new Object();
			var prodCorp:Array = new Array();
			var payload:Object = new Object();
			var OCDoc:Object = new Object();
			var j:int = 0;
			
			var df:DateFormatter = new DateFormatter;
			df.formatString="YYYY-MM-DD";
						
 			if ( (arrProductos) && (arrProductos.length>0))
			{
			
				for (j=0; j<arrProductos.length;j++)
				{				
					var objProducto:Object = new Object();
					objProducto.numero = j+1;
					objProducto.prd_lvl_number = arrProductos[j]["sku"];
					objProducto.pmg_sell_qty = arrProductos[j]["cantidad"];
					objProducto.Pmg_sell_cost = arrProductos[j]["precio"];
					
					prodCorp.push(objProducto);
				} 				
				
				//doc
				var cuadrat:Object = new Object();
				cuadrat.cuadrat_numlin_detalle = arrProductos.length;
				cuadrat.cuadrat_campo_detalle = "pmg_sell_qty";
				cuadrat.cuadrat_suma_detalle = sumaCantidades;
				OCDoc.odSolicOCDocChk = cuadrat;
				 
				//OC
				var solicObj:Object = new Object();
				var obj:Object = new Object();
				obj.vendor_number = idProveedor;
				obj.org_lvl_number = idSucursal;
				
 				obj.pmg_entry_date  = df.format(fechaEnvio);   // Fecha Envío 
				obj.pmg_release_date = df.format(fechaEmision);  // Fecha Emisión 
				obj.pmg_exp_rct_date = df.format(fechaRecepcion); // Fecha Recepción  

				obj.detalle = prodCorp;
				
				solicObj.odSolicOC = obj;
				
				OCDoc.odGrSolicOC = solicObj;
				
				payload.odSolicOCDoc  = OCDoc; 
			} 
			
/* PRUEBAS WS COLOMBIA CON DATOS EN DURO    */	
//               alert.warning("PRUEBAS EMISION OC --> WS COLOMBIA CON DATOS EN DURO!!!!");	
//               	
//				var objProducto:Object = new Object();
//				objProducto.numero = 1;
//				objProducto.prd_lvl_number = 89253;
//				objProducto.pmg_sell_qty = 600;
//				objProducto.Pmg_sell_cost = 500;
//				
//				prodCorp.push(objProducto);
//				
//				var objProducto2:Object = new Object();
//				objProducto2.numero = 2;
//				objProducto2.prd_lvl_number = 89240;
//				objProducto2.pmg_sell_qty = 600;
//				objProducto2.Pmg_sell_cost = 500;
//				
//				prodCorp.push(objProducto2);				
//				
//				
//				//doc
//				var cuadrat:Object = new Object();
//				cuadrat.cuadrat_numlin_detalle = 2;
//				cuadrat.cuadrat_campo_detalle = "pmg_sell_qty";
//				cuadrat.cuadrat_suma_detalle = 100;
//				OCDoc.odSolicOCDocChk = cuadrat;
//				 
//				//OC
//				var solicObj:Object = new Object();
//				var obj:Object = new Object();
//				obj.vendor_number = 2225;
//				obj.org_lvl_number = 75;
//				
// 				obj.pmg_entry_date  = "2010-02-10";   // Fecha Envío 
//				obj.pmg_release_date = "2010-02-10";  // Fecha Emisión 
//				obj.pmg_exp_rct_date = "2010-02-10"; // Fecha Recepción  
//
//				obj.detalle = prodCorp;
//				
//				solicObj.odSolicOC = obj;
//				
//				OCDoc.odGrSolicOC = solicObj;
//				
//				payload.odSolicOCDoc  = OCDoc; 
			
			
			//unificar parametros
			solicitarOrdenesDeCompraRequest.cabecera = cabecera;
			solicitarOrdenesDeCompraRequest.payload = payload;			

//            var qName:QName = new QName("form");
//            var xmlDocument:XMLDocument = new XMLDocument();
//            var simpleXMLEncoder:SimpleXMLEncoder = new SimpleXMLEncoder(xmlDocument);
//            var xmlNode:XMLNode = simpleXMLEncoder.encodeValue(solicitarOrdenesDeCompraRequest, qName, xmlDocument);
//            var xml:XML = new XML(xmlDocument.toString());
//			  trace("---------------------------");
//			  trace(xml.toString());	
//			  trace("---------------------------");			
		
	
		
			//Set Header WSS
        	var user:String = modelo.archivo_properties.wss.token.user;
        	var pass:String = modelo.archivo_properties.wss.token.password; 
			var header:SOAPHeader = SOAPHeaderUtil.returnWSSEHeaderWithNonceAndTimestamp(user, pass);
			header.mustUnderstand = true;
			service.endpointURI = modelo.archivo_properties.wss.endpointURI;
			service.clearHeaders();
        	service.addHeader(header);
        	
			var call:AsyncToken  = service.wmSolicitarOrdenesDeCompra(solicitarOrdenesDeCompraRequest);
					
			call.addResponder( responder );
		}

	
	}
}

